package com.coderising.litestruts;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ReflectionUtil {
public static List<Method> getSetterMethods(Class<?> clz) {
return getMethods(clz,"set");
}
public static void setParameters(Object o, Map<String, String> params) {
List<Method> methods=getSetterMethods(o.getClass());
for(String name:params.keySet())
{
String methodName="set"+name;
for(Method m:methods)
{
if(m.getName().equalsIgnoreCase(methodName))
{
try{
m.invoke(o, params.get(name));
}catch(IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
{
e.printStackTrace();
}
}
}
}
}
public static List<Method> getGetterMethods(Class<?> clz) {
return getMethods(clz,"get");
}
public static List<Method> getMethods(Class<?> clz,String startWithName)
{
List<Method> methods=new ArrayList<>();
for(Method m:clz.getDeclaredMethods())
{
if(m.getName().startsWith(startWithName))
{
methods.add(m);
}
}
return methods;
}
public static Map<String, Object> getParamterMap(Object o) {
Map<String,Object> params=new HashMap<>();
List<Method> methods=getGetterMethods(o.getClass());
for(Method m:methods)
{
String methodName=m.getName();
String name=methodName.replaceFirst("get","").toLowerCase();
try{
Object value=m.invoke(o);
params.put(name, value);
}catch(Exception e)
{
e.printStackTrace();
}
}
return params;
}
}